/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package GM;

import org.eclipse.emf.common.util.EList;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Operation</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link GM.Operation#getDescription <em>Description</em>}</li>
 *   <li>{@link GM.Operation#getDompre <em>Dompre</em>}</li>
 *   <li>{@link GM.Operation#getDompost <em>Dompost</em>}</li>
 *   <li>{@link GM.Operation#getReqpre <em>Reqpre</em>}</li>
 *   <li>{@link GM.Operation#getReqpost <em>Reqpost</em>}</li>
 *   <li>{@link GM.Operation#getTrigpre <em>Trigpre</em>}</li>
 *   <li>{@link GM.Operation#getIn <em>In</em>}</li>
 *   <li>{@link GM.Operation#getOut <em>Out</em>}</li>
 *   <li>{@link GM.Operation#getHasev <em>Hasev</em>}</li>
 *   <li>{@link GM.Operation#getMinExecTImes <em>Min Exec TImes</em>}</li>
 *   <li>{@link GM.Operation#getMaxExecTimes <em>Max Exec Times</em>}</li>
 * </ul>
 * </p>
 *
 * @see GM.GMPackage#getOperation()
 * @model
 * @generated
 */
public interface Operation extends GM.Object {
	/**
	 * Returns the value of the '<em><b>Description</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Description</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Description</em>' attribute.
	 * @see #setDescription(String)
	 * @see GM.GMPackage#getOperation_Description()
	 * @model
	 * @generated
	 */
	String getDescription();

	/**
	 * Sets the value of the '{@link GM.Operation#getDescription <em>Description</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Description</em>' attribute.
	 * @see #getDescription()
	 * @generated
	 */
	void setDescription(String value);

	/**
	 * Returns the value of the '<em><b>Dompre</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Dompre</em>' containment reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Dompre</em>' containment reference.
	 * @see #setDompre(Definition)
	 * @see GM.GMPackage#getOperation_Dompre()
	 * @model containment="true"
	 * @generated
	 */
	Definition getDompre();

	/**
	 * Sets the value of the '{@link GM.Operation#getDompre <em>Dompre</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Dompre</em>' containment reference.
	 * @see #getDompre()
	 * @generated
	 */
	void setDompre(Definition value);

	/**
	 * Returns the value of the '<em><b>Dompost</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Dompost</em>' containment reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Dompost</em>' containment reference.
	 * @see #setDompost(Definition)
	 * @see GM.GMPackage#getOperation_Dompost()
	 * @model containment="true"
	 * @generated
	 */
	Definition getDompost();

	/**
	 * Sets the value of the '{@link GM.Operation#getDompost <em>Dompost</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Dompost</em>' containment reference.
	 * @see #getDompost()
	 * @generated
	 */
	void setDompost(Definition value);

	/**
	 * Returns the value of the '<em><b>Reqpre</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Reqpre</em>' containment reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Reqpre</em>' containment reference.
	 * @see #setReqpre(Definition)
	 * @see GM.GMPackage#getOperation_Reqpre()
	 * @model containment="true"
	 * @generated
	 */
	Definition getReqpre();

	/**
	 * Sets the value of the '{@link GM.Operation#getReqpre <em>Reqpre</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Reqpre</em>' containment reference.
	 * @see #getReqpre()
	 * @generated
	 */
	void setReqpre(Definition value);

	/**
	 * Returns the value of the '<em><b>Reqpost</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Reqpost</em>' containment reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Reqpost</em>' containment reference.
	 * @see #setReqpost(Definition)
	 * @see GM.GMPackage#getOperation_Reqpost()
	 * @model containment="true"
	 * @generated
	 */
	Definition getReqpost();

	/**
	 * Sets the value of the '{@link GM.Operation#getReqpost <em>Reqpost</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Reqpost</em>' containment reference.
	 * @see #getReqpost()
	 * @generated
	 */
	void setReqpost(Definition value);

	/**
	 * Returns the value of the '<em><b>Trigpre</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Trigpre</em>' containment reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Trigpre</em>' containment reference.
	 * @see #setTrigpre(Definition)
	 * @see GM.GMPackage#getOperation_Trigpre()
	 * @model containment="true"
	 * @generated
	 */
	Definition getTrigpre();

	/**
	 * Sets the value of the '{@link GM.Operation#getTrigpre <em>Trigpre</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Trigpre</em>' containment reference.
	 * @see #getTrigpre()
	 * @generated
	 */
	void setTrigpre(Definition value);

	/**
	 * Returns the value of the '<em><b>In</b></em>' reference list.
	 * The list contents are of type {@link GM.Entity}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>In</em>' reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>In</em>' reference list.
	 * @see GM.GMPackage#getOperation_In()
	 * @model
	 * @generated
	 */
	EList<Entity> getIn();

	/**
	 * Returns the value of the '<em><b>Out</b></em>' reference list.
	 * The list contents are of type {@link GM.Entity}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Out</em>' reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Out</em>' reference list.
	 * @see GM.GMPackage#getOperation_Out()
	 * @model
	 * @generated
	 */
	EList<Entity> getOut();

	/**
	 * Returns the value of the '<em><b>Hasev</b></em>' reference list.
	 * The list contents are of type {@link GM.Event}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Hasev</em>' reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Hasev</em>' reference list.
	 * @see GM.GMPackage#getOperation_Hasev()
	 * @model
	 * @generated
	 */
	EList<Event> getHasev();

	/**
	 * Returns the value of the '<em><b>Min Exec TImes</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Min Exec TImes</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Min Exec TImes</em>' attribute.
	 * @see #setMinExecTImes(int)
	 * @see GM.GMPackage#getOperation_MinExecTImes()
	 * @model required="true"
	 * @generated
	 */
	int getMinExecTImes();

	/**
	 * Sets the value of the '{@link GM.Operation#getMinExecTImes <em>Min Exec TImes</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Min Exec TImes</em>' attribute.
	 * @see #getMinExecTImes()
	 * @generated
	 */
	void setMinExecTImes(int value);

	/**
	 * Returns the value of the '<em><b>Max Exec Times</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Max Exec Times</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Max Exec Times</em>' attribute.
	 * @see #setMaxExecTimes(int)
	 * @see GM.GMPackage#getOperation_MaxExecTimes()
	 * @model required="true"
	 * @generated
	 */
	int getMaxExecTimes();

	/**
	 * Sets the value of the '{@link GM.Operation#getMaxExecTimes <em>Max Exec Times</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Max Exec Times</em>' attribute.
	 * @see #getMaxExecTimes()
	 * @generated
	 */
	void setMaxExecTimes(int value);

} // Operation
